package com.shujia.scala

import java.lang.StringBuilder
import java.util.Scanner


object Demo2Base {
  def main(args: Array[String]): Unit = {
    /**
     * 1、变量：var, 可以再指向其他对象
     * 2、常量：val , 不能再指向其它对象
     * 尽量使用常量
     *
     * 在scala中变量的类型可以省略，会自动推断变量的类型，根据等号右边推断等号左边变量的类型
     */
    //自动推断类型
    var s = "java"
    //州的指定类型
    var s1: String = "scala"
    //可以再指向其它对象
    s1 = "spark"
    println(s1)

    //常量
    val i: Int = 100
    //不能再指向其它对象
    //i = 200
    println(i)

    println("=" * 100)

    /**
     * 2、类型转换
     */
    val str: String = "1000"
    //java中方法
    val i1: Int = Integer.parseInt(str)
    println(i1)
    //scala中类型转换
    println(str.toInt)
    println(str.toDouble)
    println(i1.toString)
    //("java".toInt)


    /**
     * 3、String
     * scala中的String和Java中是同一个
     * java中所有的String的方法再scala中都可以使用
     *
     */
    val str1: String = "java,spark,hadoop"
    val split: Array[String] = str1.split(",")

    //scala中有的方法java中没有，scala是通过隐式转换动态增加的方法
    //println(str1.toInt)

    //字符串拼接
    //1、使用+, 不推荐使用
    val str2: String = "java" + "hadoop" + "spark"
    println(str2)

    //2、java 中的StringBuffer和StringBuilder
    val builder = new StringBuilder()
    builder.append("1")
    builder.append("2")
    builder.append("3")
    builder.append("4")
    println(builder.toString)

    //3、scala中的方法
    val id = "001"
    val name = "张三"
    val age = 23
    val str3: String = s"$id\t$name\t${age}java"
    println(str3)

    println("=" * 100)


    /**
     * 4、数组
     *
     */
    //定义数组
    val arr: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8)

    //获取数组长度
    println(arr.length)
    //通过下标获取数据
    println(arr(1))

    //mkString，将一个数组通过一个分隔符拼接成一个字符串
    val str4: String = arr.mkString(",")
    println(str4)

    //遍历数组
    //1、增强for循环
    for (i: Int <- arr) {
      println(i)
    }

    println("=" * 100)

    //2、通过下表遍历
    var j = 0
    while (j < arr.length) {
      println(arr(j))
      j += 1
    }

    println("=" * 100)

    //3、foreach,面向函数编程
    arr.foreach(println)

    /**
     * 5、流程控制
     *
     */

    val scanner = new Scanner(System.in)
    println("请输入年龄")
    val age1: Int = scanner.nextInt()
    if (age1 >= 18) {
      println("以成年")
    } else {
      println("未成年")
    }


  }

}
